Amazon CloudSearchで日本語文書を検索する
Amazon CloudSearchが大幅アップデート
先日、CloudSearchが大幅アップデートされたということでニュースになっていました。日本語を含む多くの言語に対応し、自動補完、位置情報、フィールドタイプ、MultiAZ、IAM対応など盛りだくさんです。そこで、今回はCloudSearchの使い方や使いどころをご紹介します。
基本的な使い方
CloudSearchの使い方は3ステップです。ドメインの作成、文書のアップロード、そして検索です。順番に見て行きましょう。
ドメインの作成
管理コンソールからCloudSearchを選んでドメイン作成を選択してください
ドメイン名、インスタンスタイプ、レプリケーション数を決めます。まずはお試しとして最小構成を指定します。
次にドメイン内に定義するインデックスのフィールドを指定します。自分でゼロから定義することもできますが、文書をアップロードして自動的に構造を作る方法もあります。現在サポートされているフォーマットは、JSON、XML、CSV、PDF、HTML、Excel、PowerPoint、Word、Textです。拡張子が合っていないと認識してくれませんので気をつけてください。
お試しにPDFファイルをアップロードしてみましょう。「なんちゃって個人情報サービス」を使ってダミーとなる個人情報をCSV形式で生成して、自動的にインデックスを定義します。保存形式をUTF-8にしてください。CSVヘッダは英語にしてください。
加工したCSV
アップロードした後に自動的に分析されたインデックス例です。追加で、日付を指定したり、日本語を指定してください。
続けて、アクセス制限を書きます。今回は特に制限を入れていません。
成功です!
インデックスの作成が成功しましたが、ドメインを使えるまで10分ほど待つ必要があります。気長に待ちましょう。
文書のアップロード
作成したドメインに文書をアップロードしましょう。先ほどインデックス作成に使ったものと同じファイルをアップします。
文書の解析中。。。
ちゃんと読み込めそうです。
おっと、エラーに!!これは日付の形式がおかしいようですね。正しくしなければ。
CloudSearchの公式ドキュメントには IETF RFC3339形式にするようにと書いてあります。例)1967-01-31T23:20:50Z これはやっかいですねー。よし、テキストエディタで置換しましょう。ちなみに、UTF時間のみの入力しか受け付けてくれませんので1967-01-31T23:20:50+09:00Zのような記述は弾かれます。ElasticSearchなら受け付けてくれるようなので今後の機能追加に期待です。
まずは月をゼロ埋め
- 検索:([0-9]{4})/([0-9]{1})/([0-9]{1,2})
- 置換:$1/0$2/$3
次に日をゼロ埋め
- 検索:([0-9]{4})/([0-9]{1,2})/([0-9]{1}),
- 置換:$1/$2/0$3,
最後に形式を変換
- 検索:([0-9]{4})/([0-9]{2})/([0-9]{2})
- 置換:$1-$2-$3T00:00:00Z
完成ですw
- これが :1974/9/1
- これになる:1974-09-01T00:00:00Z
それではリベンジです。いけました!
これで文書の登録が完了です。
ドメインの検索
それでは検索をしてみましょう。
おー、ちゃんと検索できています。しかも、カテゴリの件数を表示しつつ絞込みするファサット検索もできています。例えば、carrierをドコモにして、ageを68歳で絞り込むと、58件出てきました!!!
最後におきまりの検索です。「もも」を検索します。
いい感じに形態素解析しているようですね。
まとめ
CloudSearchを使って、日本語を含むドキュメントをアップロードし、日本語で検索してみました。ちゃんと形態素解析されているようで、単語を入力すると正しく表示してくれました。一方で、渡辺と渡邉など、検索キーワードの入力時に間違えやすいですし、サジェストなども欲しいところです。次回は、今回紹介しきれなかった他の機能や使い方を紹介したいと思います。